package com.btpj.shop.service;

import com.btpj.shop.dto.CategoryDto;
import com.btpj.shop.dto.param.CategoryParam;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

public interface CategoryService {

    /**
     * 添加商品分类
     *
     * @param categoryParam CategoryParam
     * @return 是否成功
     */
    boolean addCategory(CategoryParam categoryParam);

    /**
     * 根据父级ID获取商品分类列表
     *
     * @param parentId 父级ID
     * @return 商品分类列表
     */
    List<CategoryDto> getCategoryDtoList(Long parentId);

    /**
     * 是否存在指定ID的商品分类
     *
     * @param id 指定商品分类ID
     * @return 是否存在指定ID的商品分类
     */
    boolean exists(Long id);

    /**
     * 获取商品分类详情
     *
     * @param id 商品分类Id
     * @return 商品分类详情
     */
    CategoryDto getCategoryDto(Long id);

    /**
     * 修改商品分类信息
     *
     * @param id   商品ID
     * @param name 商品分类名称
     * @param sort 排序值
     * @return 是否成功
     */
    boolean updateCategory(Long id, @NotBlank String name, @NotNull Integer sort);

    /**
     * 批量删除商品分类信息
     *
     * @param ids 商品ID集
     * @return 是否成功
     */
    boolean deleteCategories(Long[] ids);
}
